home *** CD-ROM | disk | FTP | other *** search
Java Source | 2000-06-23 | 6.0 KB | 196 lines |
- /*
- * QuickTime for Java SDK Sample Code
-
- Usage subject to restrictions in SDK License Agreement
- * Copyright: © 1996-1999 Apple Computer, Inc.
-
- */
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.*;
- import java.io.*;
-
- import quicktime.qd.*;
- import quicktime.*;
- import quicktime.std.StdQTConstants;
- import quicktime.std.image.*;
- import quicktime.std.movies.*;
- import quicktime.io.*;
- import quicktime.util.*;
-
- import quicktime.app.QTFactory;
- import quicktime.app.actions.*;
- import quicktime.app.display.*;
- import quicktime.app.image.*;
- import quicktime.app.players.*;
- import quicktime.std.image.GraphicsMode;
- import quicktime.app.anim.*;
-
- public class ImageCompositing extends Frame implements QDConstants, StdQTConstants, Errors, Runnable {
- public static ImageCompositing pm;
-
- private static boolean profiling = true;
- private Thread profileThread;
- private Compositor comp;
-
- public static void main (String args[]) {
- try {
- QTSession.open();
- pm = new ImageCompositing("QT in Java");
- pm.pack();
- pm.show();
- pm.toFront();
-
- if (profiling) {
- pm.profileThread = new Thread(pm);
- pm.profileThread.start();
- }
- } catch (Exception e) {
- e.printStackTrace();
- QTSession.close();
- }
- }
-
- //only used if profiling
- public void run () {
- comp.resetStatistics();
- for (;;) {
- try {
- Thread.sleep (5000);
- } catch (Exception e) {}
-
- float stat = comp.getStatistics();
- if (stat != 0)
- System.out.println ("Frames a second:" + stat);
- comp.resetStatistics();
- }
- }
-
- ImageCompositing (String title) throws Exception {
- super (title);
- QTCanvas myQTCanvas = new QTCanvas(QTCanvas.kPerformanceResize, 0.5f, 0.5f);
- add("Center", myQTCanvas);
-
- addWindowListener(new WindowAdapter () {
- public void windowClosing (WindowEvent e) {
- // cleanup profile thread if profiling
- if (profileThread != null)
- profileThread.stop();
-
- QTSession.close();
- dispose();
- }
- public void windowClosed (WindowEvent e) {
- System.exit(0);
- }
- });
-
-
- QDGraphics gw = new QDGraphics (new QDRect(340, 240));
- if (profiling)
- comp = new ProfileCompositor (gw, QDColor.lightGray, 10, 1);
- else
- comp = new Compositor (gw, QDColor.lightGray, 10, 1);
-
- myQTCanvas.setClient (comp, true);
- setupCompositor (comp);
- }
-
-
- private void setupCompositor (Compositor comp) throws Exception {
- JavaTextDrawer jtDrawer = new JavaTextDrawer (new JavaText(), new Dimension (150, 38), true);
- // apply a tinge of pink to the java text that is drawn
- jtDrawer.setGraphicsMode (new GraphicsMode (blend, QDColor.gray));
- comp.addMember (jtDrawer, 1);
-
- Compositor sh = new Compositor (new QDGraphics (new QDRect(200, 200)),
- /*new QDColor(0xDFFF, 0xDFFF, 0xFFFF)*/QDColor.white, 20, 1);
- addSprites (sh);
- sh.setLocation (10, 10);
- sh.getTimer().setRate(1);
- comp.addMember (sh, 3);
-
- Movie m = makeMovie (new QTFile (QTFactory.findAbsolutePath ("jumps.mov")));
- MoviePresenter md = new MoviePresenter (m);
- md.setLocation (120, 120);
- md.setGraphicsMode (new GraphicsMode (blend, QDColor.magenta));
- md.setRate(1);
- comp.addMember (md, 2);
-
- ImagePresenter id = makeImagePresenter (new QTFile (QTFactory.findAbsolutePath ("pics/house.jpg")),
- new QDRect (100, 100));
- id.setLocation (20, 20);
- id.setGraphicsMode (new GraphicsMode (blend, QDColor.yellow));
- comp.addMember (id, 2);
-
- Dragger dragger = new Dragger (MouseResponder.kNoModifiersMask);
- SWController controller2 = null;
- if (profiling)
- controller2 = new ProfileSWController (dragger, true);
- else
- controller2 = new SWController (dragger, true);
-
- comp.addController (controller2);
-
- LayerChanger lc = new LayerChanger (InputEvent.ALT_MASK);
- SWController controller3 = new SWController (lc, true);
- comp.addController (controller3);
-
- SimpleActionList al2 = new SimpleActionList ();
- al2.addMember (new BounceAction (2, 1, comp, comp.getTransformable(jtDrawer), 1, 1));
- al2.addMember (new BounceAction (10, 1, comp, comp.getTransformable(id), 1, 1));
- al2.addMember (new BounceAction (10, 1, comp, comp.getTransformable(md), -1, -1));
- comp.addController (al2);
-
- comp.getTimer().setRate(1);
-
- ControlPanel cp = new ControlPanel(comp, jtDrawer);
- add("North", cp);
- cp.setDisplay();
- }
-
- private Movie makeMovie (QTFile f) throws IOException, QTException {
- OpenMovieFile movieFile = OpenMovieFile.asRead(f);
- Movie m = Movie.fromFile (movieFile);
- m.getTimeBase().setFlags (loopTimeBase);
- return m;
- }
-
- private ImagePresenter makeImagePresenter (QTFile file, QDRect size) throws Exception {
- GraphicsImporterDrawer if1 = new GraphicsImporterDrawer (file);
- if1.setDisplayBounds (size);
- return ImagePresenter.fromGraphicsImporterDrawer (if1);
- }
-
- void addSprites (Compositor sd) throws IOException, QTException {
- File matchFile = QTFactory.findAbsolutePath ("images/Ship01.pct"); //this file must exist in the directory!!!
- ImageDataSequence isp = ImageUtil.createSequence (matchFile);
- ImageDataSequence seq = ImageUtil.makeTransparent (isp, QDColor.blue);
-
- Matrix matrix1 = new Matrix();
- matrix1.setTx(20);
- matrix1.setTy(20);
- matrix1.setSx(0.8F);
- matrix1.setSy(0.8F);
- TwoDSprite s1 = new TwoDSprite(seq, 4, matrix1, true, 1);
- sd.addMember (s1);
-
- Matrix matrix2 = new Matrix();
- matrix2.setTx(4);
- matrix2.setTy(4);
- TwoDSprite s2 = new TwoDSprite(seq, 1, matrix2, true, 10);
- sd.addMember (s2);
-
- SimpleActionList al = new SimpleActionList();
- ImageSequencer is = new ImageSequencer (seq);
- is.setLooping (ImageSequencer.kLoopForwards);
- al.addMember (new NextImageAction (20, 1, is, s1));
- al.addMember (new BounceAction (20, 1, sd, s1, 3, 2));
- ImageSequencer is2 = new ImageSequencer (seq);
- is2.setLooping (ImageSequencer.kLoopForwards);
- al.addMember (new NextImageAction (15, 1, is2, s2));
- al.addMember (new BounceAction (40, 1, sd, s2, 4, 3));
- sd.addController (al);
- }
- }
-